﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Spring.Context;
using Spring.Context.Support;
using ProyectoGrupo5.Negocio;
using ProyectoGrupo5.ClasesDominio;

namespace ProyectoGrupo5.Pruebas
{
    [TestFixture]
    public class TestOfertanteService
    {
       private IApplicationContext contexto = null;

       [TestFixtureSetUp]
       public void InicializarSpring()
       {
            this.contexto = new XmlApplicationContext(
                "assembly://ProyectoGrupo5/ProyectoGrupo5/capaNegocio.xml",
                "assembly://ProyectoGrupo5/ProyectoGrupo5/capaPersistencia.xml");
       }

       [Test]
       public void TestCrearOfertanteCorrectamente()
       {
           OfertanteService ofertanteService = (OfertanteService)this.contexto.GetObject("ofertanteService");
            Assert.NotNull(ofertanteService);
            Ofertante nuevoOfertante = new Ofertante();
            nuevoOfertante.CodigoOfertante = 3;
            nuevoOfertante.RazonSocial = "Saga Fallabella";
            nuevoOfertante.Ruc = "1234567890A";
            nuevoOfertante.Correo = "ofertas@fallabella.com";
            nuevoOfertante.Contrasena = "564087f";
            try
            {
                nuevoOfertante = ofertanteService.CrearOfertante(nuevoOfertante);
            }
            catch (Exception e)
            {
                Assert.Fail(string.Format("Excepción: {0}", e.Message));
            }
            Assert.NotNull(nuevoOfertante);
            Assert.Greater(nuevoOfertante.CodigoOfertante, 0);
       }

       [Test]
       public void TestEliminarOfertante()
       {
           OfertanteService ofertanteService = (OfertanteService)this.contexto.GetObject("ofertanteService");
           Assert.NotNull(ofertanteService);
           Ofertante antiguoOfertante = new Ofertante();
           antiguoOfertante.CodigoOfertante = 2;

           try
           {
               ofertanteService.EliminarOfertante(antiguoOfertante.CodigoOfertante);
           }
           catch (Exception e)
           {
               Assert.Fail(string.Format("Excepción: {0}", e.Message));
           }
           Assert.IsNull(antiguoOfertante);
       }
    
    }
}